import {
  Controller,
  Get,
  HttpException,
  HttpStatus,
  Post,
  Param,
  Body,
  UseFilters,
} from '@nestjs/common';
import { CustomHttpException } from '../../common/filters/customHttpException.filter';
import { ParseIntPipe } from '../../common/pipes/parse-int.pipe';
import { CatsService } from './cats.service';

// http请求中的body，query，params
// body：请求体中的数据
// query：请求的参数，URL后面以？的形式，例：user?id
// params：请求的参数，URL后面以/的形式，例：user/:id

// @Param() 装饰器访问以这种方式声明的路由参数，该装饰器应添 加到函数签名中。
// @Param可以用在get或者post，但是都是针对 localhost:3000/news/list?id=zq&age=12这种才可以获取，
// 而针对body内部都是获取不到的，可以使用@Body

@UseFilters(CustomHttpException)
@Controller('cats')
export class CatsController {
  constructor(private readonly service: CatsService) {}

  @Get()
  findCats() {
    return 'find something cats';
  }

  @Post()
  findAllCats() {
    // return 'find all cats';
    throw new HttpException(
      {
        status: HttpStatus.BAD_REQUEST,
        message: '请求参数id 必传',
        error: 'this is a post request',
      },
      HttpStatus.BAD_REQUEST,
    );
  }

  // 更新
  @Post(':id')
  update(@Param('id', new ParseIntPipe()) id, @Body('message') message) {
    console.log(typeof id);
    return this.service.update(id, message);
  }
}
